﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using CestodoBebe.Util;

namespace CestoDoBebe.DAO
{
    public class Categoria
    {
        private int m_codCategoriaProduto;
        private string m_nmeCategoriaProduto;
        private string m_descCategoriaProduto;
        private byte m_flgAtivo;
        private List<Categoria> m_listaCategorias;

        AcessoDados dados;

        #region propriedades
        /// <summary>
        /// Classe de categoria do Sistema
        /// </summary>
        public int codCategoriaProduto
        {
            get { return m_codCategoriaProduto;  }
            set { m_codCategoriaProduto = value; }
        }

        public string nmeCategoriaProduto
        {
            get { return m_nmeCategoriaProduto;  }
            set { m_nmeCategoriaProduto = value; }
        }

        public string descCategoriaProduto
        {
            get { return m_descCategoriaProduto; }
            set { m_descCategoriaProduto = value; }
        }

        public byte flgAtivo
        {
            get { return m_flgAtivo;  }
            set { m_flgAtivo = value; }
        }

        public List<Categoria> listaCategorias
        {
            get { return m_listaCategorias; }
            set { m_listaCategorias = value; }
        }
        #endregion



        public bool incluirCategoria(Categoria objCategoria)
        {
            using (dados = new AcessoDados())
            {

                List<MySqlParameter> parametros = new List<MySqlParameter>();

                parametros.Add(new MySqlParameter("NMECATEGORIAPRODUTO", objCategoria.nmeCategoriaProduto));
                parametros.Add(new MySqlParameter("DESCCATEGORIAPRODUTO", objCategoria.descCategoriaProduto));
                parametros.Add(new MySqlParameter("FLGATIVO", objCategoria.flgAtivo));
                

                dados.ExecutarComando("USP_INSERE_CATEGORIAPRODUTO", parametros);


                return true;
            }
        
        }

        public bool alterarCategoria(Categoria objCategoria)
        {
            using (dados = new AcessoDados())
            {

                List<MySqlParameter> parametros = new List<MySqlParameter>();

                parametros.Add(new MySqlParameter("NMECATEGORIAPRODUTO", objCategoria.nmeCategoriaProduto));
                parametros.Add(new MySqlParameter("DESCCATEGORIAPRODUTO", objCategoria.descCategoriaProduto));
                parametros.Add(new MySqlParameter("IDCATEGORIA", objCategoria.codCategoriaProduto));


                dados.ExecutarComando("USP_ALTERA_CATEGORIAPRODUTO", parametros);


                return true;
            }

        }

        public void excluirCategoria(string idCategoria)
        {
            using (dados = new AcessoDados())
            {
                List<MySqlParameter> parametros = new List<MySqlParameter>();

                parametros.Add(new MySqlParameter("_CODCATEGORIAPRODUTO", idCategoria));

                dados.ExecutarComando("USP_DELETA_CATEGORIAPRODUTO", parametros);
            }
        }


        public List<Categoria> listarCategoria()
        {
            List<Categoria> listaCategoria = new List<Categoria>();

            Categoria objCategoria;

            using (dados = new AcessoDados())
            {

                MySqlDataReader leitor = dados.ObterLeitor("USP_LISTA_CATEGORIAPRODUTO");

                while (leitor.Read())
                    {
                        objCategoria = new Categoria();
                        objCategoria.codCategoriaProduto = Convert.ToInt32(leitor["CODCATEGORIAPRODUTO"]);
                        objCategoria.nmeCategoriaProduto = Convert.ToString(leitor["NMECATEGORIAPRODUTO"]);
                        objCategoria.flgAtivo            = Convert.ToByte(leitor["FLGATIVO"]);

                        listaCategoria.Add(objCategoria);
                     }                
            }

            return listaCategoria;
        }


        public List<Categoria> listarCategoria(string idCategoria)
        {
            List<Categoria> listaCategoria = new List<Categoria>();

            Categoria objCategoria;

            using (dados = new AcessoDados())
            {

                List<MySqlParameter> parametros = new List<MySqlParameter>();

                parametros.Add(new MySqlParameter("IDCATEGORIA", idCategoria));

                MySqlDataReader leitor = dados.ObterLeitor("USP_LISTA_CATEGORIAPRODUTO_ID", parametros);

                while (leitor.Read())
                {
                    objCategoria = new Categoria();
                    objCategoria.codCategoriaProduto = Convert.ToInt32(leitor["CODCATEGORIAPRODUTO"]);
                    objCategoria.nmeCategoriaProduto = Convert.ToString(leitor["NMECATEGORIAPRODUTO"]);
                    objCategoria.descCategoriaProduto = Convert.ToString(leitor["DESCCATEGORIAPRODUTO"]);
                    objCategoria.flgAtivo = Convert.ToByte(leitor["FLGATIVO"]);

                    listaCategoria.Add(objCategoria);
                }
            }

            return listaCategoria;
        }

        public List<Categoria> listarCategoriasAtivas()
        {
            List<Categoria> lista = new List<Categoria>();

            using (dados = new AcessoDados())
            {

                MySqlDataReader leitor = dados.ObterLeitor("USP_LISTA_CATEGORIASATIVAS");

                while (leitor.Read())
                    {
                        Categoria objCategoria = new Categoria();
                        objCategoria = new Categoria();
                        objCategoria.codCategoriaProduto = Convert.ToInt32(leitor["CODCATEGORIAPRODUTO"]);
                        objCategoria.nmeCategoriaProduto = Convert.ToString(leitor["NMECATEGORIAPRODUTO"]);
                        objCategoria.flgAtivo            = Convert.ToByte(leitor["FLGATIVO"]);

                        lista.Add(objCategoria);
                     }                
            }

            return lista;
        }

             
    }
}
